﻿using System;
using Core.Messages;

namespace Core.IServices
{
    public interface IGenericReaderService<TId, TEntity, TDto, TQuery>
        where TEntity : Core.Domain.IBaseEntity<TId>
        where TDto : Core.Dtos.BaseDto<TId>
        where TQuery : Core.Queries.Query<TEntity>
    {
        QueryResponse<TDto> FindBy(Core.Messages.Request<TQuery> request);
        TDto FindByID(TId id);
        void Initialize(Core.IRepository.IUnitOfWork unitOfWork, Core.IRepository.IRepository<TId, TEntity> repository);
    }
}
